<?php
namespace tools;
class Code{
//    定义私有变量
    private $img;
    private $number;
    private $width;
    private $height;
//    定义预加载方法
    public function __construct($number=4,$width=150,$height=50)
    {
        $this->number=$number;
        $this->width=$width;
        $this->height=$height;
    }
//    对外显示方法
    public function show(){
        $this->create();
        $this->write();
        $this->makeTrouble();
        $this->output();
    }
//    创建画布函数
    private function create(){
//        头部
        header('Content-type=image/png');
//        定义画布大小
        $this->img=imagecreatetruecolor($this->width,$this->height);
//        画布颜色
        $color=imageColorAllocate($this->img,255,255,255);
//        填充画布
        imagefill($this->img,0,0,$color);
    }
//    创建画布数字
    private function write(){
//        字符库
        $seed='qwertyuiopasdfghjklzxcvbnm';
        $str='';
//        循环次数
        for($i=0;$i<$this->number;$i++){
//            字符X轴位置
            $x=($this->width/$this->number)*$i+10;
//            字符颜色
            $color=imagecolorallocate($this->img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
            $text=$seed[mt_rand(0,strlen($seed)-1)];
            $str .=$text;
//            填充字体
            imagettftext($this->img,30,mt_rand(-45,45),$x,35,$color,__DIR__.'/../resource/fonts/ddylr.ttf',$text);

        }
        file_put_contents('code.txt',$str);
        $_SESSION['code']=$str;
    }
//    制造干扰函数
    private function makeTrouble(){
//        循环次数
        for($i=0;$i<50;$i++){
//            颜色
            $color=imagecolorallocate($this->img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
//            填充点
            imagesetpixel($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
        }
    }
//    输出图像函数
    private function output(){
//        输出图像
        imagepng($this->img);
//        释放资源
        imagedestroy($this->img);
    }
}